[IceCTF 2018] Posted
Description
The challenge description speaks of a bitwise boi
that has been posting things online. We are asked to find out what exactly he has been posting. Later on the hint 41
was also released.
The data: DychGDZJRRsEUTI0JDViVlxeZyFIBCM7MwosGRQCMCgZJCIrGCsoRkFIajcSKhBTGx9XeTV4MDlZB1Y=
Solution
The posted online
hint is supposed to lead us towards looking for a url, while the bitwise
indicates that we need to use a bitwise operation. Only the xor operation makes any real sense in this context, and it’s a classic technique, so we go with that. After the additional hint, we can assume that either we need to xor with 41 (which doesn’t work), or the key has a length 41.
Thinking that we’re looking for a url, we can try to use the known plaintext “https://” as a way to already find the first 8 bytes of the xor key. This gives us gSUhEsj4
. We can then try to apply this key where it should repeat (assuming a length of 41 bytes), resulting in the following plaintext: /9bzoc9/
. After a google search, we end up at an IceCTF related reddit post, which has the next part of the challenge, and which allows us to retrieve the entire 41-byte xor key by taking the xor of the ciphertext with the url: https://reddit.com/r/securityCTF/comments/9bzoc9/icectf_2018_613_september/
.
The next step has WOxq0XzBfOeOVB/MESKaYVrBgpALdhIUZN02lldvIzUJc+s2zVeYW2TDGSUS6Law
as a comment on that reddit post, with the reply/hint AES256:32
.
Because we have no other way of finding a key, we can try taking the first 32 bytes/256 bits from the xor key used before. Decrypting the AES (ECB) with that key results in IceCTF{up_in_our_posts_stealing_our_keys}
and padding.